package com.dao;

import java.util.List;
import java.util.Map;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.po.ClassPO;
import com.po.Class_coursePO;
import com.po.CoursePO;
import com.po.Course_skillPO;
import com.po.SkillPO;
@Repository
public class CourseDao {
	@Autowired
	private SqlSessionTemplate sqlTemplate; 

	/**
	 * 查找开设的课程信息
	 * @return
	 */
	public List<ClassPO> findCourseInfo() {
		return sqlTemplate.selectList("course.findCourseInfo");
	}
	
	/**
	 * 查找班级下的详细的课程(如:初级、中级等)
	 * @param id 
	 * @return
	 */
	public List<CoursePO> findLevelInfoById(int id) {
		return sqlTemplate.selectList("course.findLevelInfoById",id);
	}
	
	/**
	 * 删除课程信息 (班级)
	 * @return
	 */
	public void deleteCourseInfo(int id) {
		sqlTemplate.delete("course.deleteCourseInfo", id);
	}
	
	/**
	 * 修改课程的信息(班级)
	 * @param map
	 */
	public void updateCourseInfo(Map<String, String> map) {
		sqlTemplate.update("course.updateCourseInfo",map);	
	}
	
	/**
	 * 修改课程等级信息
	 * @param map
	 */
	
	public void updateLevel(Map<String, String> map) {
		sqlTemplate.update("course.updateLevel",map);
	}
	
	/**
	 * 查找开设的课程信息下面指定等级课程的详细技能内容
	 * @return
	 */
	
	public List<SkillPO> findSkillPO(int id) {
		return sqlTemplate.selectList("course.findSkillPO",id);
	}
	
	/**
	 * 添加课程级别信息
	 * @param coursePO
	 */
	public void saveLevelInfo(CoursePO coursePO) {
	  sqlTemplate.insert("course.saveLevelInfo",coursePO);
	}
	
	
	/**
	 * 删除课程某一指定等级和相应的课程(只删除关系)
	 * @param id
	 */
	public void deleteLevelInfo(int id) {
		sqlTemplate.delete("course.deleteLevelInfo1",id);
		sqlTemplate.delete("course.deleteLevelInfo2",id);
	}
	/**
	 * 删除给定ID的技能
	 * @param id
	 */
	public void deleteSkillInfo(int id) {
		sqlTemplate.delete("course.deleteSkillInfo",id);
	}
	
	/**
	 * 保存技术在技术表中
	 * @param map 
	 */
	public int InsertSkillInfo(SkillPO skillPO) {
		return sqlTemplate.insert("course.insertSkillInfo",skillPO);
	}
	
	/**
	 * 保存课程和技能的关系在第三张表中
	 * @param conn
	 */
	public void insertConnection(Course_skillPO conn) {
		sqlTemplate.insert("course.insertConnection",conn);
	}
	
	/**
	 * 修改技术信息
	 * @param skillPO
	 */
	public void updateSkillInfo(SkillPO skillPO) {
		sqlTemplate.delete("course.updateSkillInfo",skillPO);
	}
	/**
	 * 按照ID，拿到课程信息
	 * @param id
	 * @return
	 */
	public ClassPO findCourseInfoById(int id) {
		return sqlTemplate.selectOne("course.findCourseInfoById",id);
	}
	/**
	 * 按照ID,拿到需要回显的等级信息
	 * @param id
	 * @return
	 */
	public CoursePO findLevelEchoById(int id) {
		return sqlTemplate.selectOne("course.findLevelEchoById",id);
	}
	/**
	 * 按照ID，拿到需要回显的技能信息
	 * @param id
	 * @return
	 */
	public SkillPO findSkillEchoById(int id) {
		return sqlTemplate.selectOne("course.findSkillEchoById",id);
	}
	/**
	 * 保存课程等级ID和课程ID关系在第三张关联表中
	 * @param conn
	 */
	public void addClassCourse_connection(Class_coursePO conn) {
		sqlTemplate.insert("course.addClassCourse_connection", conn);
	}
}
